Java零基础-方法执行内存分析

方法只定义,不调用,是不会执行的,并且 JVM 也不会给该方法分配 “运行所属” 的内存空间。只有在调用这个方法的时候,才会动态的给这个方法分配所属的内存空间。

在 JVM 内存划分上有这样三块主要的内存空间(除此之外还有其他的内存空间)

  • 方法区内存
  • 堆内存
  • 栈内存

分配内存的过程:

  1. 方法代码片段 属于 .class 字节码文件的一部分,字节码文件在类加载的时候,将其放到了方法区当中。所以 JVM 中的三块主要的内存空间中 方法区内存 最先存有数据,存放了代码片段
  2. 代码片段 虽然在 方法区内存 当中只有一份,但是可以被重复调用。每一次调用这个方法的时候,需要给该方法分配独立的活动场所,在 栈内存 中分配。【栈内存 中分配方法运行的所属内存空间】
  3. 方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生 压栈 动作,方法执行结束后,会把该方法分配的内存空间全部释放,此时发生 弹栈 动作
    • 压栈:分配内存
    • 弹栈:释放内存

image-20200209202143928